#include <graphics/Fog.h>

namespace ne
{
    Fog::Fog(const std::string &name)
        : Object(name),
          mFogColor(Color::ZERO),
          mFogStart(10.0f),
          mFogEnd(1000.0f),
          mFogDensity(1.0f),
          mFogMode(FM_LINEAR),
          mFogCoordMode(FCM_DEPTH)
    {
    }

    Fog::Fog(const Fog &f)
        : Object(f),
          mFogColor(f.mFogColor),
          mFogStart(f.mFogStart),
          mFogEnd(f.mFogEnd),
          mFogDensity(f.mFogDensity),
          mFogMode(f.mFogMode),
          mFogCoordMode(f.mFogCoordMode)
    {
    }

    Fog& Fog::operator = (const Fog &f)
    {
        Object::operator = (f);
        mFogColor = f.mFogColor;
        mFogStart = f.mFogStart;
        mFogEnd = f.mFogEnd;
        mFogDensity = f.mFogDensity;
        mFogMode = f.mFogMode;
        mFogCoordMode = f.mFogCoordMode;
        return *this;
    }

    void Fog::setColor(const Color &c)
    {
        mFogColor = c;
    }

    Color Fog::getColor() const
    {
        return mFogColor;
    }

    void Fog::setStart(const real f)
    {
        mFogStart = f;
    }

    real Fog::getStart() const
    {
        return mFogStart;
    }

    void Fog::setEnd(const real f)
    {
        mFogEnd = f;
    }

    real Fog::getEnd() const
    {
        return mFogEnd;
    }

    void Fog::setDensity(const real f)
    {
        mFogDensity = f;
    }

    real Fog::getDensity() const
    {
        return mFogDensity;
    }

    void Fog::setFogMode(const FogMode fm)
    {
        mFogMode = fm;
    }

    FogMode Fog::getFogMode() const
    {
        return mFogMode;
    }

    void Fog::setFogCoordMode(const FogCoordMode fcm)
    {
        mFogCoordMode = fcm;
    }

    FogCoordMode Fog::getFogCoordMode() const
    {
        return mFogCoordMode;
    }

    Fog::~Fog()
    {
    }
}
